<?php

namespace app\admin\controller\kuerp;

use addons\kuerp\controller\File;
use addons\kuerp\model\AdminConfig;
use addons\kuerp\model\Staff;
use app\common\controller\Backend;
use app\common\exception\UploadException;
use app\common\library\Upload;

/**
 * kuerp 基础控制器
 *
 * @icon fa fa-circle-o
 */
class Base extends Backend
{

    protected $noNeedRight = ['upload'];
    protected $_staff = null;

    public function _initialize()
    {
        parent::_initialize();
        $staff = Staff::where(['admin_id' => $this->auth->id])->find();
        if (!empty($staff)) {
            $this->_staff = $staff;
        }
        // else{
//            $data = [
//                'admin_id' => $this->auth->id,
////                'group_ids' => implode(',', $this->auth->getGroupIds()),
//                'name' => $this->auth->nickname,
//                'num'=>'01',
//                'mobile' => $this->auth->username,
//                'salt' => $this->auth->salt,
//                'password' => $this->auth->password,
//                'img' => '/assets/addons/kuerp/mini/avatar.png',
//                'email' => $this->auth->email,
//                'sex' => 1,
//                'status' => 1,
//                'createtime' => $this->auth->createtime,
//                'updatetime' => $this->auth->updatetime
//            ];
//            $staffModel = new Staff();
//            $result = $staffModel->save($data);
//            if ($result) {
//                $staff = Staff::where(['admin_id' => $this->auth->id])->find();
//                $this->_staff = $staff;
//            } else {
//                $this->error('当前账号未绑定员工,要使用插件功能，请在员工列表添加账号', 'kuerp/department/staff');
//            }
//        }
        $map_key=AdminConfig::getConfigValue('map_key', 'wechat');
        $this->assign('map_key',$map_key);
    }

    public function getStaff()
    {
        return $this->_staff;
    }


    protected function kuerpValidate($params, $class, $scene, $rules = []) {
        $validate = validate('addons\kuerp\validate\\'.$class);
        if (!$validate->check($params, $rules, $scene)) {
            return $validate->getError();
        }
        return true;
    }

    /**
     * 上传文件
     * @ApiMethod (POST)
     * @param File $file 文件流
     */
    public function upload() {

        $attachment = null;
        //默认普通上传文件
        $file = $this->request->file('file');
        try {
            $upload     = new Upload($file);
            $attachment = $upload->upload();
            $info = $attachment->toArray();
            if (stristr($attachment->mimetype, 'image')) {
                $types = 'image';
            } else {
                $types = 'file';
            }
            $file = new \addons\kuerp\model\File();
            $params = [
                'name'          =>  $info['filename'],
                'save_name'     =>  $info['url'],
                'size'          =>  isset($info['filesize'])?$info['filesize']:0,
                'types'         =>  $types,
                'file_path'     =>  $info['url'],
                'create_staff_id'     =>  empty($this->_staff)?0:$this->_staff->id,
            ];
            $file->data(array_filter($params));
            $file->save();
            $fileId = $file->id;

        } catch (UploadException $e) {
            return json_encode(['code' => 0, 'msg' => $e->getMessage()]);
        }
        $this->success(__('Uploaded successful'),'', [
            'id'  => $fileId,
            'url' =>$params['file_path']
        ]);
    }
}
